package com.huike.clues.mapper;

import com.huike.common.annotation.AutoFill;
import com.huike.common.core.domain.entity.SysDictData;
import com.huike.common.enums.DaoOperationType;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: fwh
 * @Date: 2023/07/11/15:58
 * @Description:
 */
@Mapper
public interface SysDictDataMapper {
    /**
     * 新增字典
     *
     * @param sysDictData
     */
    @Insert("insert into sys_dict_data(dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) " +
            "values" +
            "(#{dictSort},#{dictLabel},#{dictValue},#{dictType},#{cssClass},#{listClass},#{isDefault},#{status},#{createBy},#{createTime},#{updateBy},#{updateTime},#{remark})")
    void insert(SysDictData sysDictData);

    /**
     * 修改字典
     *
     * @param sysDictData
     */
    void update(SysDictData sysDictData);

    /**
     * 根据字典类型查询字典数据信息
     *
     * @param dictType
     * @return
     */
    @Select("select * from sys_dict_data where dict_type=#{dictType}")
    List<SysDictData> select(String dictType);

    /**
     * 查询字典数据详细
     *
     * @param dictCode
     * @return
     */
    @Select("select * from sys_dict_data where dict_code=#{dictCode}")
    SysDictData selectDictCode(Integer dictCode);

    /**
     * 字典列表
     * @param list
     * @return
     */
    List<SysDictData> selectList(SysDictData list);

    /**
     * 删除字典类型
     * @param dictCodes
     */
    void delect(Integer dictCodes);

    List<SysDictData> selectDictDataList(SysDictData sysDictData);

    String selectDictValue(@Param("dictType") String courseSubject, @Param("dictLabel") String dictLabel);

    @AutoFill(DaoOperationType.UPDATE)
    int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);

    int countDictDataByType(String dictType);

    /**
     * 统计报表专用接口！！！！！请勿删除！！！！！
     * 根据字典类型和字典键值查询字典数据信息
     * @param dictType 字典类型
     * @param dictValue 字典键值
     * @return 字典标签
     */
    String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);

}
